package com.cmwa.scbp.business.projectManager.service;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.formula.functions.T;

import com.cmwa.scbp.base.mvc.entity.Page;
import com.cmwa.scbp.base.mvc.entity.Result;
import com.cmwa.scbp.base.mvc.entity.SearchParam;
import com.cmwa.scbp.business.prdSellChannel.entity.PrdSellChannelVo;
import com.cmwa.scbp.business.product.entity.NavBizVo;
import com.cmwa.scbp.business.product.entity.PrdAccountVo;
import com.cmwa.scbp.business.product.entity.ProductInfoVo;
import com.cmwa.scbp.business.product.entity.ProjectInfoVo;
import com.cmwa.scbp.business.product.entity.SubProductInfoVo;
import com.cmwa.scbp.business.product.entity.TreFeeDetailVo;

/**
 * 产品运营业务接口层
 * 
 * @author ex-zhengqq
 * @date 2019-01-22 15:33:47
 */
public interface ProjectManagerService {
	
	public ProjectInfoVo getPrdInfoByCode(String prdCode);
	
	public Page<PrdSellChannelVo> findPrdDisChannelData(SearchParam param);
	
	public Page<PrdAccountVo> findPrdAccountData(SearchParam param);
	
	public Page<TreFeeDetailVo> findPrdFeeData(SearchParam param);
	
	public NavBizVo findPrjNavBizData(String prdCode);
	
	public List<SubProductInfoVo> findSubProductInfo(String prjcode);
	
	public List<ProjectInfoVo> findProductData (String[] prjprcstatStr);
	
	public List<ProjectInfoVo> prdInfoList (SearchParam param);
	
	public Page<ProjectInfoVo> prdInfoListPage(SearchParam sp);
	
	/**
	 * 导出
	 * @param response
	 * @param sp
	 */
	public void export(HttpServletResponse response, SearchParam sp) throws IOException;

	/**
	 * 下拉查询系列产品信息
	 * @param param
	 * @return
	 */
	public List<ProjectInfoVo> queryMatchProjectInfoList(SearchParam param);
	
	/**
	 * 下拉查询产品信息
	 * @param param
	 * @return
	 */
	public List<ProjectInfoVo> queryMatchProductInfoList(SearchParam param);
	
	public SubProductInfoVo querySubPrdInfoBySubPrdCode(String subPrdCode);
	
	public List<ProjectInfoVo> queryMatchSubPrdInfoList(SearchParam param);
	
	public List<ProjectInfoVo> queryMatchSubPrdLineList(SearchParam param);
	
	public void saveProjectData(ProjectInfoVo projectInfoVo);
	
	public void saveProductData(ProductInfoVo productInfoVo);
	
	public void saveSubProductData(SubProductInfoVo subProductInfoVo);
	
	public void addPrdAccountList(PrdAccountVo prdAccountVo);
	
	public void delPrdAccountList(String accIds);
	
	public void productManagerDel(String prjcode,String prdcode,String subPrdCode);
	
	/**
	 * 银行账户下拉查询
	 * @param sp
	 * @return
	 */
	public List<PrdAccountVo> queryBankAccountInfoList(SearchParam sp);

	public Result<T> checkAddAccountList(String accLevel,String accId, String code);
	
	/**
	 * 账户类型下拉查询
	 * @param sp
	 * @return
	 */
	public List<PrdAccountVo> queryAccountTypeList(SearchParam sp);
	
	/**
	 * 添加数据权限
	 * @param projectInfoVo
	 * @throws Exception
	 */
	public void addAuthority(ProjectInfoVo projectInfoVo) throws Exception;
	
	/**
	 * 删除数据权限
	 * @param projectInfoVo
	 * @throws Exception
	 */
	public void cleanUpAuthority(ProjectInfoVo projectInfoVo) throws Exception;
	
	/**
	 * 修改产品状态
	 * @param sp
	 */
	public void productManagerUpd(SearchParam sp);
}
